package cn.iocoder.yudao.module.ai.controller.admin.dataset.vo;

import cn.iocoder.yudao.module.ai.controller.admin.datasetreleasefile.vo.DatasetReleaseFileRespVO;
import cn.iocoder.yudao.module.ai.controller.admin.datasetversion.vo.DatasetVersionRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

import javax.validation.constraints.NotEmpty;

@Schema(description = "管理后台 - 数据集管理 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DatasetRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25147")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "数据集名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("数据集名称")
    private String name;

    @Schema(description = "数据集描述", example = "你猜")
    @ExcelProperty("数据集描述")
    private String description;

    @Schema(description = "素材来源 ： sd 手动上传 ；wl 识别 ；dz 电子封条同步；参考字典类型（material-library-type）", example = "2")
    @ExcelProperty("素材来源 ： sd 手动上传 ；wl 识别 ；dz 电子封条同步；参考字典类型（material-library-type）")
    private String sourceType;

    @Schema(description = "标注场景（文件类型） 1 图片；2 视频；参见字典 dataset_mark_file_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("标注场景（文件类型） 1 图片；2 视频")
    private String fileType;

    @Schema(description = "所属企业")
    @ExcelProperty("所属企业")
    private String ownerOrg;

    @Schema(description = "所属企业名称", example = "李四")
    @ExcelProperty("所属企业名称")
    private String ownerOrgName;

    @Schema(description = "标注类型，（1物体检测，2 实例分割）参见字典 dataset_mark_biz_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("标注类型，参见字典 dataset_mark_biz_type")
    private String senceType;

    @Schema(description = "文件原始名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("文件原始名称")
    private String fileOriginalName;

    @Schema(description = "文件存储路径", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("文件存储路径")
    private String fileUploadPath;

    @Schema(description = "所属行业编号，业务字典 Industry_affiliation", requiredMode = Schema.RequiredMode.REQUIRED, example = "fireFighting")
    @NotEmpty(message = "所属行业编号大类不能为空")
    private String industryId;
    @Schema(description = "行业编号-模型大类，业务字典 model_broad_category", requiredMode = Schema.RequiredMode.REQUIRED, example = "fireFighting_preventionWorks")
    @NotEmpty(message = "行业编号子类不能为空")
    private String industryId2;
    @Schema(description = "行业编号-模型小类，业务字典 model_subclass", requiredMode = Schema.RequiredMode.REQUIRED, example = "fireFighting_preventionWorks-1")
    @NotEmpty(message = "行业编号小类不能为空")
    private String industryId3;

    @Schema(description = "标签标号列表,格式[{\"labelId\":1,\"labelName\":\"person\",\"color\":\"#223344\"}]", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("标签标号列表,格式[{\"labelId\":1,\"labelName\":\"person\",\"color\":\"#223344\"}]")
    private String labelInfo;

    @Schema(description = "时长（针对视频）秒")
    @ExcelProperty("时长（针对视频）秒")
    private Long duration;

    @Schema(description = "包含原始文件数量")
    @ExcelProperty("包含原始文件数量")
    private Integer containFileNum;

    @Schema(description = "标注文件数量")
    @ExcelProperty("标注文件数量")
    private Integer markFileNum;

    @Schema(description = "标注文件标签列表，逗号隔开", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("标注文件标签列表，逗号隔开")
    private String markFileClasses;

    @Schema(description = "文件大小")
    @ExcelProperty("文件大小")
    private Long fileSize;

    /**
     * 已质检文件数量
     */
    private Integer qualityFileNum;

    @Schema(description = "质检状态 0 ,未质检；1 ，质检完成-合格；2 质检完成-不合格；3 质检中", example = "1")
    @ExcelProperty("质检状态 0 ,未质检；1 ，质检完成")
    private String qualityStatus;

    /**
     * 质检状态名称
     */
    private String qualityStatusName;

    @Schema(description = "质检人编号", example = "19214")
    @ExcelProperty("质检人编号")
    private String qualityUserId;

    @Schema(description = "质检时间")
    @ExcelProperty("质检时间")
    private LocalDateTime qualityTime;

    @Schema(description = "发布状态 0 未发布，1 已发布", example = "1")
    @ExcelProperty("发布状态 0 未发布，1 已发布")
    private String publishStatus;

    /**
     * 发版状态名称
     */
    private String publishStatusName;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "供应商id", example = "19701")
    @ExcelProperty("供应商id")
    private Long suplierId;

    /**
     * 所属行业名称
     */
    private String industryName ;
    /**
     * 模型大类名称
     */
    private String industry2Name ;
    /**
     * 模型小类名称
     */
    private String industry3Name ;

    /**
     * 下载地址
     */
    private String url ;

    /**
     * 第一个文件下载地址
     */
    private String firstFileUrl ;

//    /**
//     * 文件列表 （详情页展示）
//     */
//    private List<DatasetReleaseFileRespVO> originalFileList;

    /**
     * 发版列表
     */
    private List<DatasetVersionRespVO> versionList;

    /**
     * 文件类型名称
     */
    private String fileTypeName;

    /**
     * 来源名称
     */
    private String sourceTypeName;
    /**
     * 场景名称
     */
    private String senceTypeName;
    /**
     * 创建人编号
     */
    private String creator;
    /**
     * 创建人名称
     */
    private String creatorName;
    /**
     * 创建人名称
     */
    private String uploderName;

    /**
     * 标签标号列表反向解析成对象
     */
    private List<Map> labelInfoList;

    /**
     * 上传文件标签文件反向解析成对象
     */
    private List<String> markFileClassesList;

    @Schema(description = "标注状态 0 未完成，1 已完成", example = "1")
    private String markStatus;

    /**
     * 标注状态名称
     */
    private String markStatusName;

    @Schema(description = "质检任务名称", example = "赵六")
    @ExcelProperty("质检任务名称")
    private String qualityTaskName;

    @Schema(description = "质检任务描述", example = "你说的对")
    @ExcelProperty("质检任务描述")
    private String qualityTaskDescription;

    @Schema(description = "质检任务创建时间")
    @ExcelProperty("质检任务创建时间")
    private LocalDateTime qualityTaskCreateTime;

    @Schema(description = "质检任务创建人", example = "1413")
    @ExcelProperty("质检任务创建人")
    private String qualityTaskUserId;

    @Schema(description = "质检任务标记。‘0’ 未创建 ；‘1’ 已创建")
    @ExcelProperty("质检任务标记。‘0’ 未创建 ；‘1’ 已创建")
    private String qualityTaskFlag;


}